package com.lizhe.quartz.scheduled;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 类描述: 定时任务 Scheduled定时任务是 Spring boot自身提供的功能，
 * 所以不需要引入Maven依赖包，直接就能使用 简单的定时任务。
 *
 * @author Lz on 2021-11-16
 */
@Component
public class ScheduledJobs {

    //fixedDelay和fixedRate，单位是毫秒 没有 cron 灵活

    //表示方法执行完成后5秒再开始执行
    // fixedRate就是每隔多长时间执行一次。(开始------->X时间------>再开始)。如果间隔时间小于任务执行时间，上一次任务执行完成下一次任务就立即执行。如果间隔时间大于任务执行时间，就按照每隔X时间运行一次。
    //@Scheduled(fixedDelay = 5000)
    //public void fixedDelayJob() throws InterruptedException {
    //    System.out.println("fixedDelay 开始" + new Date());
    //    Thread.sleep(10 * 1000);
    //    System.out.println("fixedDelay 结束" + new Date());
    //}


    // 表示每隔3秒
    // 而fixedDelay是当任务执行完毕后一段时间再次执行。（开始--->结束(隔一分钟)开始----->结束）。上一次执行任务未完成，下一次任务不会开始。
    //@Scheduled(fixedRate = 3000)
    //public void fixedRateJob() throws InterruptedException {
    //    System.out.println("===========fixedRate 开始:" + new Date());
    //    Thread.sleep(5 * 1000);
    //    System.out.println("===========fixedRate 结束:" + new Date());
    //}

    //表示每隔5秒执行一次  cron表达式：灵活
    //@Scheduled(cron = "0/5 * * * * ? ")
    //public void cronJob() {
    //    System.out.println("=========================== ...>>cron...." + new Date());
    //}
}
